/*
* 包含n个reducer函数，根据老的state和指定的action返回一个新的state
* */
import {combineReducers} from 'redux'

import {receiveUser,failToGetUser,receiveCatecorylist,receSubCateGory,receiveProducts} from './action-types';
//保存用户数据的reducer
const userInit = {}

const user = (state = userInit, action) => {
    switch (action.type) {

        case receiveUser:
            return action.data
            //此状态作废
        case failToGetUser:
            return action.data
        default:
            return state
    }
}

//保存级别列表的reduer
const CategoryListInit = {fisrt:[],second:[]}

const CategoryList = (state = CategoryListInit, action) => {
    switch (action.type) {

        case receiveCatecorylist:
            //console.log("查看state的结构在刚开始",state)
            //这个写法是错误的，这个bug太难找了，因为在点击查看子分类的时候，
            //先是更新了category类中的parentId的值，
            //更新成功之后才发送的请求获取二级列表数据。但是表格在parentId发生变化时，
            // 数据就用了second的数据，此时second没有值，
            //数据类型是对象，和表格要求的参数类型不同，所以就报错了，导致列表渲染失败

            //  特别需要注意setState设置成功之后才触发的回调函数去请求数据，

            // return {first:action.data,second:{}}
            
            return {first:action.data,second:[]}
        case receSubCateGory:
            //console.log("查看state的结构",state)
            return {first:state.first,second:action.data} 
        default:
            return state
    }
}

//这个使用的是后台分页，每次只保存当前的页的数据
const productInit = {list:[]}
const productsList = (state = productInit, action) => {
    switch (action.type) {
        case receiveProducts:
            return action.data
        default:
            return state
    }
}
export default combineReducers({
    user,
    CategoryList,
    productsList

})
/*
* 向外暴露的状态结构：{user:{},CategoryList:[]}
* */